package xin.yogee.ms.common;

import cn.hutool.core.map.MapUtil;
import cn.hutool.json.JSONUtil;
import cn.hutool.log.Log;
import cn.hutool.log.LogFactory;
import cn.hutool.log.StaticLog;
import cn.hutool.log.level.Level;
import org.springframework.beans.factory.annotation.Autowired;
import xin.yogee.ms.module.sys.service.ISysUserService;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 基类控制器
 * </p>
 *
 * @author jackieQ
 * @since 2018-10-15
 */
public class BaseController {

    Log log = LogFactory.get();

    @Autowired
    protected ISysUserService iSysUserService;

    /**
     * app端json返回统一处理
     *
     * @param state 接口返回状态 success error
     * @param data  接口数据对象
     * @param msg   接口响应消息
     * @return json字符串
     */
    protected String successJson(String state, Object data, String msg) {
        //TODO:: 返回状态码统一处理
        Map<String, Object> resultMap = MapUtil.newHashMap();
        resultMap.put("state", state);
        resultMap.put("data", data);
        resultMap.put("msg", msg);
        String result = JSONUtil.toJsonStr(resultMap);
        StaticLog.info("接口响应信息：" + result);
        return result;
    }

    /**
     * 树形结构数据统一返回处理
     */
    protected String treeList(List userList) {
        Map<String, Object> resultMap = MapUtil.newHashMap();
        Map statusMap = MapUtil.newHashMap();
        statusMap.put("code", "200");
        statusMap.put("message", "操作成功");
        resultMap.put("status", statusMap);
        resultMap.put("data", userList);
        StaticLog.info(JSONUtil.toJsonStr((resultMap)));
        return JSONUtil.toJsonStr((resultMap));
    }

    /**
     * 校验请求参数是否有空值
     *
     * @param str 请求参数
     * @return String 处理结果
     */
    protected Boolean checkParamNull(String... str) {
        //TODO::入参校验
        for (String param : str) {
            if (param == null || "".equals(param)) {
                log.warn("请求参数错误：" + param + "参数为空！", Level.WARN);
                return false;
            }
        }
        return true;
    }

}
